#include<bits/stdc++.h>
using namespace std;
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType; 
typedef struct LNode{
	ElemType data;
	struct LNode *next;	
}LNode, *LinkList;

Status Init(LinkList &L)
{
	L = new LNode;
	if(!L) return ERROR;
	L->next = NULL;
	return OK;
}
Status Create(LinkList &L, int n)
{
	LNode *t = L;
	for(int i = 0; i < n; i ++)
	{
		LNode *p = new LNode;
		if(!p) return ERROR;
		cin >> p->data;
		t->next = p;
		t = p;
	}
	t->next = NULL;
	return OK;
}
void Change_List(LinkList &L)
{
	/*****************Begin*****************/
	if(!L->next || !L->next->next) return;
	
	LNode *slow = L, *fast = L;
	while(fast->next && fast->next->next)
	{
		slow = slow->next;
		fast = fast->next->next;
	}
	LNode *rear = slow->next;
	slow->next = NULL;
	
	LNode *pre = NULL, *cur = rear; 
	
	while(cur)
	{
		LNode *cur_next = cur->next;
		cur->next = pre;
		pre = cur;
		cur = cur_next;
	}
	
	LNode *p = L->next, *q = pre;
	// 方法一： 
	//	while(p && q)
	//	{
	//		LNode *q1 = q;
	//		q = q->next;
	//		q1->next = p->next;
	//		p->next = q1;
	//		p = p->next->next;
	//	}

	while(p && q)
	{
		LNode *p_next = p->next, *q_next = q->next;
		q->next = p->next;
		p->next = q;
		p = p_next;
		q = q_next;	
	} 
    /****************End********************/
}
void Show(LinkList L)
{
	LNode *p = L->next;
	while(p)
	{
		cout << p->data << ' ';
		p = p->next;
	}
	cout << endl;
}
int main()
{
	LinkList L;
	Init(L);
	
	int n;
	cin >> n;
	
	Create(L, n);
	Change_List(L);
	Show(L);
	 
	return 0;
}
/*

测试输入：
6
1 2 3 4 5 6

预期输出：
1 6 2 5 3 4

*/